'use strict';

/**
 * 该中间件判断前置条件。
 * 比如是否被禁止，可以在此处添加剔除用户登陆，或者防止多设备登陆等逻辑
 * 如果通过所有逻辑，向ctx内注入参数,为后边用
 * @return {function} session验证中间件
 */
module.exports = () => {
  return async function(ctx, next) {

    const authorization = ctx.headers.token;
    ctx.app.logger.info("token:服务信息：%s",authorization);

    if (authorization === undefined || authorization === "") { // 不带token，或者字段为空抛出
      ctx.throw(401, '登陆过期, 请重新登陆');
      return;
    }


    ctx.t_session = authorization;
    await next();
  };
};
